package org.example.mrrope.service;

import lombok.extern.slf4j.Slf4j;
import org.example.mrrope.utils.DingUtil;
import org.example.mrrope.utils.FormUtils;
import org.jacoco.agent.rt.internal_035b120.core.internal.flow.IFrame;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


/**
 * CYQ
 * 绳子派工单
 */
@Service
@Slf4j
public class RopeWorkOrder {
    @Autowired
    private DingUtil dingUtil;

    public Integer saveRopeWorkOrder(JSONObject jsonObject, String id, String userId) throws Exception {
        String aa = null;
        //---------------------绳子信息--------------------
        //查询物料下面的绳子
        if (jsonObject.has("tableField_lujgt57k")) {
            JSONArray jsonArrTow = dingUtil.getInnerTables(id, "FORM-3A8D681A77094B6DAF95EBB52ABF301DGFLW", "tableField_lujgt57k");
            JSONObject result = new JSONObject();
            List<String> list2 = new ArrayList<>();
            //合并
            for (int i = 0; i < jsonArrTow.length(); i++) {
                JSONObject item = jsonArrTow.getJSONObject(i);
                String bName = item.has("textField_lx07bljm") ? item.getString("textField_lx07bljm") : "";//半成品B号
                String cId = item.has("textField_lujgt57l") ? item.getString("textField_lujgt57l") : "";//绳子C号
                String cName = item.has("textField_lxd6qtml") ? item.getString("textField_lxd6qtml") : "";//绳子名称
                Double cYonLian = item.has("numberField_lz6dt0zh") ? item.getDouble("numberField_lz6dt0zh") : 0.0;//标准用量
                Double cShunHaoYonLian = item.has("numberField_lxvgkgg4") ? item.getDouble("numberField_lxvgkgg4") : item.getDouble("numberField_lz6dt0zh");//含损耗用量
                String huaSe = item.has("textareaField_lvxhxh0a") ? item.getString("textareaField_lvxhxh0a") : "";//花色挂法
                Double kouJin = item.has("numberField_lujhx4e0") ? item.getDouble("numberField_lujhx4e0") : 0.0;//绳子口径
                Double miZon = item.has("numberField_lujhx4e1") ? item.getDouble("numberField_lujhx4e1") : 0;//米重
                Double fuJi = item.has("numberField_lujhx4e2") ? item.getDouble("numberField_lujhx4e2") : 0;//付机重量
                Double yinFa = item.has("numberField_lxwv7czn") ? item.getDouble("numberField_lxwv7czn") : 0;//总应发数量
                Double sJyinFa = item.has("numberField_m5z1tmyq") ? item.getDouble("numberField_m5z1tmyq") : 0;//总应发数量
                Object img = item.has("imageField_lxy4xj34") ? item.get("imageField_lxy4xj34") : null;//绳子图片
                Object type = item.has("selectField_lxtpnbg4") ? item.get("selectField_lxtpnbg4") : "";//绳子类型
                Object textField = item.has("textField_lxipl733") ? item.get("textField_lxipl733") : "";//绳子规格
                String bOMMS = "无"; //描述
                String bOMName = "无"; //半成品名称
                Object bomNumber = "无"; //半成品数量
                Object bomNumberTow = "无"; //半成品实际数量
                Object bOMjg = "否"; //是否外加工
                ArrayList<String> arrayListJG = new ArrayList<>();
                //产品规格描述,半成品名称,是否需要外加工
                //---------------------------半成品信息---------------------------
                if (jsonObject.has("tableField_lwed3a1x")) {
                    JSONArray jsonBTow = dingUtil.getInnerTables(id, "FORM-3A8D681A77094B6DAF95EBB52ABF301DGFLW", "tableField_lwed3a1x");
                    for (int j3 = 0; j3 < jsonBTow.length(); j3++) {
                        JSONObject jsonBTow2 = jsonBTow.getJSONObject(j3);
                        if (jsonBTow2.getString("textField_lujgt592").equals(bName)) {
//                            bOMImg = jsonBTow2.getString("imageField_lwt5fomx");
                            bOMMS = jsonBTow2.getString("textareaField_m2ohpz46");
                            bOMName = jsonBTow2.getString("textField_lwbmqipz");
                            bOMjg = jsonBTow2.has("radioField_m3iilehf") ? jsonBTow2.get("radioField_m3iilehf") : "否";
                            bomNumber = jsonBTow2.has("numberField_lxwv7czo") ? jsonBTow2.get("numberField_lxwv7czo") : 0;
                            bomNumberTow = jsonBTow2.has("numberField_m5z1tmyo") ? jsonBTow2.get("numberField_m5z1tmyo") : 0;
                            break;
                        }
                    }
                }
                if (result.has(cId)) {
                    // 合并B号
                    JSONObject jsonObjectOne = result.getJSONObject(cId);
                    String BomHaoTow = jsonObjectOne.getString("textField_lx07bljm");
                    //合并总应发量
                    Double number = jsonObjectOne.getDouble("numberField_lxwv7czn") + yinFa;
                    Double numberTow = jsonObjectOne.getDouble("numberField_m5z1tmyq") + sJyinFa;
                    String ids = BomHaoTow + "," + bName;
                    jsonObjectOne.put("textField_lx07bljm", ids);
                    jsonObjectOne.put("numberField_lxwv7czn", number);
                    jsonObjectOne.put("numberField_m5z1tmyq", numberTow);
                    //合并名称
                    String name = jsonObjectOne.getString("bOMName") + ", " + bOMName;
                    jsonObjectOne.put("bOMName", name);
                    //合并规格
                    String ms = jsonObjectOne.getString("bOMMS") + "      " + BomHaoTow + ":  " + bOMMS;
                    jsonObjectOne.put("bOMMS", ms);
                    //半成品数量
                    String bNumber = jsonObjectOne.getString("bomNumber") + " , " + BomHaoTow + ":  " + bomNumber;
                    jsonObjectOne.put("bomNumber", bNumber);
                    //合并是否外加工
                    String bOMjgTow = jsonObjectOne.getString("bOMjg");
                    arrayListJG.add(bOMjgTow);
                    if (arrayListJG.contains("是")) {
                        jsonObjectOne.put("bOMjg", "是");
                    }
                }
                else {
                    // 如果 result 中不存在该 name，则创建一个新的 JSONObject 并添加到 result 中
                    JSONObject newItem = new JSONObject();
                    newItem.put("textField_lx07bljm", bName);
                    newItem.put("textField_lxd6qtml", cName);
                    newItem.put("numberField_lz6dt0zh", cYonLian);
                    newItem.put("numberField_lxvgkgg4", cShunHaoYonLian);
                    newItem.put("textareaField_lvxhxh0a", huaSe);
                    newItem.put("numberField_lujhx4e0", kouJin);
                    newItem.put("numberField_lujhx4e1", miZon);
                    newItem.put("numberField_lujhx4e2", fuJi);
                    newItem.put("numberField_lxwv7czn", yinFa);
                    newItem.put("numberField_m5z1tmyq", sJyinFa);
                    newItem.put("imageField_lxy4xj34", img);
                    newItem.put("selectField_lxtpnbg4", type);
                    newItem.put("textField_lujgt57l", cId);
                    newItem.put("textField_lxipl733", textField);
                    newItem.put("bomNumber", bName + ":  " + bomNumber);
//                    newItem.put("bomNumberTow", bName + ":  " + bomNumberTow);
                    newItem.put("bOMMS", bName + ":  " + bOMMS);
                    newItem.put("bOMName", bOMName);
                    newItem.put("bOMjg", bOMjg);
                    arrayListJG.add(bOMjg.toString());
                    result.put(cId, newItem);
                }
            }
            // 将 result 转换为最终的 JSONArray
            JSONArray mergedArray = new JSONArray();
            for (String key : result.keySet()) {
                mergedArray.put(result.getJSONObject(key));
            }
            //输出合并后的 JSONArray
            System.out.println(mergedArray.toString());
            JSONObject upJsonE = new JSONObject();
            //合并后的绳子信息
            for (int i = 0; i < mergedArray.length(); i++) {
                JSONObject jsOne = mergedArray.getJSONObject(i);
                //-----------------------------BOM表里面的绳子子表的信息-------------------------
                long roundedNumberTow = 0L;
                long roundedNumber = 0L;
                if (jsOne.has("numberField_lxwv7czn")) {
                    Double numberFieldLxwv7czn = jsOne.getDouble("numberField_lxwv7czn");
                    roundedNumber = Math.round(numberFieldLxwv7czn);
                    upJsonE.put("numberField_lugaf2gh", roundedNumber);//生产总量
                } else {
                    upJsonE.put("numberField_lugaf2gh", 0);//生产总量
                }

                if (jsOne.has("numberField_m5z1tmyq")) {
                    Double numberField_m5z1tmyq = jsOne.getDouble("numberField_m5z1tmyq");
                    roundedNumberTow = Math.round(numberField_m5z1tmyq);
                    upJsonE.put("numberField_m607sexp", roundedNumberTow);//实际生产总量
                } else {
                    upJsonE.put("numberField_m607sexp", 0);//实际生产总量
                }
                upJsonE.put("textField_m4kru1em", jsOne.has("bomNumber") ? jsOne.get("bomNumber") : "");//半成品数量
                upJsonE.put("radioField_m3zbz39a", jsOne.has("bOMjg") ? jsOne.get("bOMjg") : "否");//是否加工
                //-------------------------棉纱信息----------------------
                if (jsonObject.has("tableField_lwg8vm75")) {
                    JSONArray jsonBTow = dingUtil.getInnerTables(id, "FORM-3A8D681A77094B6DAF95EBB52ABF301DGFLW", "tableField_lwg8vm75");
                    //获取当前C号下的棉纱
                    JSONArray jsonArray = new JSONArray();
                    for (int k2 = 0; k2 < jsonBTow.length(); k2++) {
                        JSONObject itemK2 = jsonBTow.getJSONObject(k2);
                        String textFieldLwg902pg = itemK2.has("textField_lwg902pg") ? itemK2.getString("textField_lwg902pg") : "";
                        String textFieldLujgt57l = jsOne.has("textField_lujgt57l") ? jsOne.getString("textField_lujgt57l") : "";
                        //C号相同的
                        if (textFieldLwg902pg.equals(textFieldLujgt57l)) {
                            if (!itemK2.has("textField_lwg902p8") || itemK2.get("textField_lwg902p8").equals("") || itemK2.get("textField_lwg902p8") == null) {
                                continue;
                            }
                            jsonArray.put(itemK2);
                        }
                    }
                    //棉纱去重
                    //属于一个绳子的总应发量合并
                    JSONObject resultTow = new JSONObject();
                    //合并
                    for (int k = 0; k < jsonArray.length(); k++) {
                        JSONObject itemK = jsonArray.getJSONObject(k);
                        String bHao = itemK.has("textField_lx07bljn") ? itemK.getString("textField_lx07bljn") : "";//半成品B号
                        String CHao = itemK.has("textField_lwg902pg") ? itemK.getString("textField_lwg902pg") : "";//绳子C号
                        String yunLiao = itemK.has("textField_lwg902p8") ? itemK.getString("textField_lwg902p8") : "";//原料号
                        String name = itemK.has("textField_lx2luc3v") ? itemK.getString("textField_lx2luc3v") : "";//名称
                        Double numberOne = 0.0;
                        if (itemK.has("numberField_lwg902pa")) {
                            numberOne = itemK.getDouble("numberField_lwg902pa");//标准用量
                        } else {
                            if (itemK.has("numberField_lxviiefd")) {
                                numberOne = itemK.getDouble("numberField_lxviiefd");
                            }
                        }
//                        Double numberTow = itemK.has("numberField_lxviiefd") ? itemK.getDouble("numberField_lxviiefd") : itemK.getDouble("numberField_lwg902pa");//含损耗用量
                        Object img = itemK.has("imageField_lxy4xj35") ? itemK.get("imageField_lxy4xj35") : "";//棉纱图片
                        Double numberBL = itemK.has("numberField_lwg902p7") ? itemK.getDouble("numberField_lwg902p7") : 0.0;//比例
                        Object type = itemK.has("selectField_lwg902p6") ? itemK.get("selectField_lwg902p6") : "";//类型
                        String yanSe = itemK.has("textField_lwg902p9") ? itemK.getString("textField_lwg902p9") : "";//颜色
                        Double numberZon = itemK.has("numberField_lxvivx3m") ? itemK.getDouble("numberField_lxvivx3m") : 0.0;//总应发数量
                        String so = itemK.has("textField_m27dnelb") ? itemK.getString("textField_m27dnelb") : "";//SO号
                        if (resultTow.has(yunLiao)) {
                            // 合并B号
                            JSONObject jsonObjectOne = resultTow.getJSONObject(yunLiao);
                            String BomHaoTow = jsonObjectOne.getString("textField_lx07bljn");
                            Double number = jsonObjectOne.getDouble("numberField_lxvivx3m") + numberZon;
                            String ids = BomHaoTow + "," + bHao;
                            jsonObjectOne.put("textField_lx07bljn", ids);//半成品B号
                            jsonObjectOne.put("numberField_lxvivx3m", number);//总应发数量
                        } else {
                            JSONObject newItem = new JSONObject();
                            newItem.put("textField_lx07bljn", bHao);//半成品B号
                            newItem.put("textField_lwg902pg", CHao);//绳子C号
                            newItem.put("textField_lwg902p8", yunLiao);//原料号
                            newItem.put("textField_lx2luc3v", name);//名称
                            newItem.put("numberField_lwg902pa", numberOne);//标准用量
//                            newItem.put("numberField_lxviiefd", numberTow);//含损耗用量
                            newItem.put("imageField_lxy4xj35", img);//棉纱图片
                            newItem.put("numberField_lwg902p7", numberBL);//比例
                            newItem.put("selectField_lwg902p6", type);//类型
                            newItem.put("textField_lwg902p9", yanSe);//颜色
                            newItem.put("numberField_lxvivx3m", numberZon);//总应发数量
                            newItem.put("textField_m27dnelb", so);//SO号
                            resultTow.put(yunLiao, newItem);
                        }
                    }
                    // 将 result 转换为最终的 JSONArray
                    JSONArray mergedArrayTOW = new JSONArray();
                    for (String key : resultTow.keySet()) {
                        mergedArrayTOW.put(resultTow.getJSONObject(key));
                    }
                    ArrayList<JSONObject> lisTow = new ArrayList<>();
                    for (int j = 0; j < mergedArrayTOW.length(); j++) {
                        JSONObject jsCTow = mergedArrayTOW.getJSONObject(j);
                        JSONObject jsbTow = new JSONObject();
                        //-------------------------棉纱信息----------------------
                        jsbTow.put("textField_lxwy8xns", jsCTow.has("textField_lwg902pg") ? jsCTow.get("textField_lwg902pg") : "");//绳子c号
                        jsbTow.put("textField_lxwy8xnq", jsCTow.has("textField_lwg902p8") ? jsCTow.get("textField_lwg902p8") : "");//棉纱编号
                        jsbTow.put("selectField_lxwy8xnp", jsCTow.has("textField_lx2luc3v") ? jsCTow.get("textField_lx2luc3v") : "");//棉纱类型
                        jsbTow.put("textField_lxwy8xnt", jsCTow.has("textField_lwg902p9") ? jsCTow.get("textField_lwg902p9") : "");//棉纱规格
                        jsbTow.put("imageField_lz29kddc", jsCTow.has("imageField_lxy4xj35") ? jsCTow.get("imageField_lxy4xj35") : "");//棉纱图片
                        jsbTow.put("numberField_lxwy8xnr", jsCTow.has("numberField_lwg902p7") ? jsCTow.get("numberField_lwg902p7") : "");//比例
                        jsbTow.put("numberField_lxwy8xnu", jsCTow.has("numberField_lwg902pa") ? jsCTow.get("numberField_lwg902pa") : "");//用量
                        jsbTow.put("numberField_lxwy8xnv", jsCTow.has("numberField_lxviiefd") ? jsCTow.get("numberField_lxviiefd") : "");//标准用量
                        jsbTow.put("numberField_lxwy8xnw", jsCTow.has("numberField_lxvivx3m") ? jsCTow.get("numberField_lxvivx3m") : "");//总应发数量
                        lisTow.add(jsbTow);
                    }
                    upJsonE.put("tableField_lwg8vm75", lisTow);//物料信息(棉纱)
                }
                //---------------------------关联生产计划---------------------------
                String title = jsonObject.getString("textField_lwt4u8ls");
                String fromUuid = "FORM-3A8D681A77094B6DAF95EBB52ABF301DGFLW";
                // 通过调用FormUtils的getAssociationFormField方法，根据fromUuid、title和id获取关联表单字段的JSON数组
                JSONArray jsonArrayOne = FormUtils.getAssociationFormField(fromUuid, title, id);
                upJsonE.put("associationFormField_lxwo5cw7", jsonArrayOne);
                //---------------------------查询物料档案，获取工价信息/FORM-0A11BF74DDA7458A88A98ED8B1957A85YEGT---------------------------
                if(jsOne.has("textField_lujgt57l")) {
                    JSONObject searchFieldJson = new JSONObject();
                    searchFieldJson.put("textField_lwg986u6", jsOne.get("textField_lujgt57l"));
                    searchFieldJson.put("selectField_lup8v6zm", "绳子");
                    String yiDaSearchReturnData_XSDD = dingUtil.yiDaSearchReturnData("FORM-0A11BF74DDA7458A88A98ED8B1957A85YEGT", searchFieldJson);//获取半成品
                    JSONArray yiDaSearchReturnData_XSDDJsonArray = new JSONArray(yiDaSearchReturnData_XSDD);
                    if (!yiDaSearchReturnData_XSDDJsonArray.isEmpty()) {
                        JSONObject xsddJSONObject = yiDaSearchReturnData_XSDDJsonArray.getJSONObject(0).getJSONObject("formData");
                        upJsonE.put("selectField_lzc1zac1", xsddJSONObject.has("selectField_lzc1zac1") ? xsddJSONObject.get("selectField_lzc1zac1") : "");//内包材料
                        upJsonE.put("numberField_lxy94hvc", xsddJSONObject.has("numberField_lxy94hvc") ? xsddJSONObject.get("numberField_lxy94hvc") : "");//副机工价
                        upJsonE.put("numberField_m2u4byhk", xsddJSONObject.has("numberField_m2u4byhk") ? xsddJSONObject.get("numberField_m2u4byhk") : "");//主机工价
                        upJsonE.put("numberField_lz770chn", xsddJSONObject.has("numberField_lz770chn") ? xsddJSONObject.get("numberField_lz770chn") : "");//挂架总价
                        upJsonE.put("numberField_lz770chv", xsddJSONObject.has("numberField_lz770chv") ? xsddJSONObject.get("numberField_lz770chv") : "");//制股比例
                    }
                    upJsonE.put("textField_m2u4byhl", "主机");//主机判断
                    upJsonE.put("textField_m2u4byhm", "副机");//副机判断

                }
                //---------------------------生产计划里面的信息----------------------------------------------------------

                upJsonE.put("dateField_lugaf2g8", jsonObject.has("dateField_m2wwkxe2") ? jsonObject.get("dateField_m2wwkxe2") : "");//制绳预计完成时间
                upJsonE.put("dateField_m3zc6d6n", jsonObject.has("dateField_lz9hf20u") ? jsonObject.get("dateField_lz9hf20u") : "");//派工单截止日期
                upJsonE.put("radioField_m42cd3fr", "正常");//派工单状态
                JSONObject searchScheduleJson = new JSONObject();
                searchScheduleJson.put("textField_lyz4wuwl", jsonObject.has("textField_lwt4u8ls") ? jsonObject.get("textField_lwt4u8ls") : "");
//                searchScheduleJson.put("textField_lxa5zy3f", jsOne.has("textField_lx07bljm") ? jsOne.get("textField_lx07bljm") : "");
                searchScheduleJson.put("textField_lxa5zy39", jsOne.has("textField_lujgt57l") ? jsOne.get("textField_lujgt57l") : "");
                String yiDaSearchReturnData_Schedule = dingUtil.yiDaSearchReturnData("FORM-60D29097D35645ADB37399403F519442QIQB", searchScheduleJson);//获取制绳派工单数据
                JSONArray yiDaSearchReturnData_ScheduleJsonArray = new JSONArray(yiDaSearchReturnData_Schedule);
                if (!yiDaSearchReturnData_ScheduleJsonArray.isEmpty()) {
                    String oid = yiDaSearchReturnData_ScheduleJsonArray.getJSONObject(0).getString("formInstanceId");
                    JSONObject zsObject = new JSONObject(dingUtil.getYidaById(oid));//原有派工单
                    Double todoAmount= jsOne.has("numberField_lxwv7czn") ? jsOne.getDouble("numberField_lxwv7czn") : 0.0;//应有的待完成量
                    Double finishedAmount= zsObject.has("numberField_m2dgqymu") ? zsObject.getDouble("numberField_m2dgqymu") : 0.0;//已完成量
                    Double dispatchedAmount= zsObject.has("numberField_m3xuacro") ? zsObject.getDouble("numberField_m3xuacro") : 0.0;//已下发量
                    upJsonE.put("numberField_m2dgqymv", todoAmount-finishedAmount);//未完成
                    upJsonE.put("numberField_m3xuacrr", todoAmount-dispatchedAmount);//未下发

                    log.info("更新 制绳车间派工单开始");
                    log.info("更新oid:{}", oid);
                    log.info("更新数据:{}", upJsonE);
                    dingUtil.UpdateYiDa(oid, upJsonE);//更新生产计划
                    log.info("更新 制绳车间派工单完成");
                }else {
                    upJsonE.put("textField_lxa5zy3f", jsOne.has("textField_lx07bljm") ? jsOne.get("textField_lx07bljm") : "");//半成品B号
                    upJsonE.put("textField_lz6pjr60", jsOne.has("textField_lujgt57s") ? jsOne.get("textField_lujgt57s") : "");//制绳机器编号
                    upJsonE.put("textField_lugaf2go", jsOne.has("numberField_lujhx4e0") ? jsOne.get("numberField_lujhx4e0") : "");//绳子口径
                    upJsonE.put("numberField_lugaf2gr", jsOne.has("numberField_lujhx4e1") ? jsOne.get("numberField_lujhx4e1") : "");//米重
                    upJsonE.put("numberField_lugaf2gx", jsOne.has("numberField_lujhx4e2") ? jsOne.get("numberField_lujhx4e2") : "");//付机
                    upJsonE.put("textareaField_lz9htdd2", jsOne.has("textareaField_lvxhxh0a") ? jsOne.get("textareaField_lvxhxh0a") : "");//花色挂法
                    upJsonE.put("imageField_lugaf2h3", jsOne.has("imageField_lxy4xj34") ? jsOne.get("imageField_lxy4xj34") : "");//图片
                    if (jsOne.has("selectField_lxtpnbg4")){
                        upJsonE.put("textField_lxv646q1", jsOne.get("selectField_lxtpnbg4"));//绳子类型
//                        upJsonE.put("textField_lxv646q1", jsOne.has("selectField_lxtpnbg4") ? jsOne.get("selectField_lxtpnbg4") : "");//绳子类型
                        if (jsOne.get("selectField_lxtpnbg4").equals("编织绳")){
                            upJsonE.put("radioField_mann5ewv", jsonObject.has("radioField_makqj7pf") ? jsonObject.get("radioField_makqj7pf") : "苍南");//工厂
                        }else if (jsOne.get("selectField_lxtpnbg4").equals("股绳" )){
                            upJsonE.put("radioField_mann5ewv", jsonObject.has("radioField_makqj7pk") ? jsonObject.get("radioField_makqj7pk") : "苍南");//工厂
                        }else if (jsOne.get("selectField_lxtpnbg4").equals("三股绳" )){
                            upJsonE.put("radioField_mann5ewv", jsonObject.has("radioField_makqj7pk") ? jsonObject.get("radioField_makqj7pk") : "苍南");//工厂
                        }
                    }
                    upJsonE.put("textField_lxa5zy3i", jsOne.has("textField_lxd6qtml") ? jsOne.get("textField_lxd6qtml") : "");//绳子名称
                    upJsonE.put("textField_lz9iqyyp", jsOne.has("textField_lxipl733") ? jsOne.get("textField_lxipl733") : "");//绳子规格
                    upJsonE.put("textField_lxa5zy39", jsOne.has("textField_lujgt57l") ? jsOne.get("textField_lujgt57l") : "");//绳子c号
                    upJsonE.put("numberField_m2dgqymv", roundedNumber);//未完成
                    upJsonE.put("numberField_m3xuacrr", roundedNumber);//未下发
                    upJsonE.put("numberField_m2dgqymu", 0);//已完成
                    upJsonE.put("numberField_m3xuacro", 0);//已下发
                    upJsonE.put("textField_m2n53278", jsOne.has("bOMName") ? jsOne.get("bOMName") : "");//产品名称
                    upJsonE.put("textareaField_m3i31qh9", jsOne.has("bOMMS") ? jsOne.get("bOMMS") : "");//产品规格
                    upJsonE.put("textField_lxa5zy34", jsonObject.has("textField_lujgt578") ? jsonObject.get("textField_lujgt578") : "");//客户
                    upJsonE.put("textField_lugaf2hx", "制绳车间");//车间
                    upJsonE.put("textField_lugaf2gf", jsonObject.has("textField_lujgt577") ? jsonObject.get("textField_lujgt577") : "无");//客户货号
                    upJsonE.put("textField_m2e5go0p", jsonObject.has("textField_m2e5ira7") ? jsonObject.get("textField_m2e5ira7") : "");// PO号
                    upJsonE.put("textField_lyz4wuwl", jsonObject.has("textField_lwt4u8ls") ? jsonObject.get("textField_lwt4u8ls") : "");//SO号
                    upJsonE.put("selectField_lwt6jzko", jsonObject.has("textField_lup8v6zn") ? jsonObject.get("textField_lup8v6zn") : "");//名称
                    upJsonE.put("textField_lz9ieioo", jsonObject.has("textField_lxk8d6fk") ? jsonObject.get("textField_lxk8d6fk") : "");//注意点
                    upJsonE.put("dateField_lugaf2fw", System.currentTimeMillis());//派工单日期


                    //调用制绳子车间派工单生成流程方法
                    aa = dingUtil.startInstance(upJsonE, userId, "FORM-60D29097D35645ADB37399403F519442QIQB");
                    log.info("YIDA-startInstance 制绳车间派工单生成流程完成" + aa);
                }
                list2.add(jsOne.has("textField_lujgt57l") ? jsOne.getString("textField_lujgt57l") : "");
            }
            //查找现有的派工单，进行循环，多余的派工单删除
            //根据SO号搜索
            JSONObject paiGonJson = new JSONObject();
            paiGonJson.put("textField_lyz4wuwl", jsonObject.has("textField_lwt4u8ls") ? jsonObject.get("textField_lwt4u8ls") : "");//so号
            String yiDaPaiGonString = dingUtil.yiDaSearchReturnData("FORM-60D29097D35645ADB37399403F519442QIQB", paiGonJson);//获取派工单数据
            JSONArray yiDaPaiGonJsonArray = new JSONArray(yiDaPaiGonString);
            HashMap<String, String> newMap = new HashMap<>();
            List<String> list1 = new ArrayList<>();
            //把C号存在容器里面
            for (int i = 0; i < yiDaPaiGonJsonArray.length(); i++){
                String oid = yiDaPaiGonJsonArray.getJSONObject(i).getString("formInstanceId");
                JSONObject pgdObject = new JSONObject(dingUtil.getYidaById(oid));//原有派工单
                if (pgdObject.has("textField_lxa5zy39")){
                    list1.add(pgdObject.getString("textField_lxa5zy39"));
                    newMap.put(pgdObject.getString("textField_lxa5zy39"),oid);
                }
            }
            // 找出派工单中有但生产计划中没有的元素
            // 派工单 减 生产计划 多出来的就是没用的派工单
            list1.removeAll(list2);
            if (list1.size() > 0){
                for (String numberC : list1) {
                    //删除多余的派工单
                    if (newMap.containsKey(numberC)){
                        JSONObject object = new JSONObject();
                        object.put("radioField_m42cd3fr", "暂停");
                        dingUtil.UpdateYiDa(newMap.get(numberC), object);
//                        dingUtil.delete(newMap.get(numberC));
                    }
                }
            }
        }


        return aa == null ? 1 : 0;
    }
}
